#include "xsUI.hpp"

namespace xs
{

//=================================================================================================
// Slider::Slider
//=========

Slider::Slider(): current_value(0), max_value(10)
{
}

//=================================================================================================
// Slider::on_lmb_down
//=========

void Slider::on_lmb_down(float x, float y)
{
	u32 last_value = current_value;
	current_value = (u32)((x+width/max_value/2)*max_value/width);
	current_value = std::min(max_value, current_value);
	if(last_value!=current_value)
		g_ui.gen_event(UIE_SLIDER_CHANGED, this);
}

//=================================================================================================
// Slider::on_mouse_move
//=========

void Slider::on_mouse_move(float x, float y, float relx, float rely, bool left_pressed)
{
	if(left_pressed)
	{
		u32 last_value = current_value;
		current_value = (u32)((x+width/max_value/2)*max_value/width);
		current_value = std::min(max_value, current_value);
		if(last_value!=current_value)
			g_ui.gen_event(UIE_SLIDER_CHANGED, this);
	}
}

//=================================================================================================
// Slider::get_pointer_pos
//=========

float Slider::get_pointer_pos()
{
	return current_value*width/max_value;
}

//=================================================================================================
// Slider::accept
//=========

void Slider::accept(UIVisitor *visitor)
{
	visitor->visit(this);
}

}